package com.lottery.material.dao.circle;

import com.lottery.material.pojo.circle.CircleInfo;
import com.lottery.material.pojo.page.Page;
import com.lottery.material.pojocustom.circle.CircleInfoCustom;
import com.lottery.material.vo.portal.circle.CircleInfoVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @description 圈子信息Mapper
 * @author rambo
 * @date 2019年4月11日 下午9:23:30
 */
@SuppressWarnings("JavaDoc")
public interface CircleInfoMapper {
	
    Integer deleteByPrimaryKey(Integer id);

    Integer insert(CircleInfo record);

    Integer insertSelective(CircleInfo record);

    CircleInfo selectByPrimaryKey(Integer id);

    Integer updateByPrimaryKeySelective(CircleInfo record);

    Integer updateByPrimaryKey(CircleInfo record);

    /**
     * description: 根据圈子id查询上架的圈子
     * author sunny
     * createDate 2019-04-25 下午 3:30
     * @param circleId
     * @return
     */
    CircleInfo findByCircleId(String circleId);

    /**
     * description：查询扩展类分页列表
     * user 朱正磊
     * time 2019-04-17 17:01
     * @param page 分页对象
     * @return 返回扩展类分页列表数据
     */
    List<CircleInfoCustom> findCustomListPage(Page page);

    /**
     * description：根据主键查询唯一扩展类数据
     * user 朱正磊
     * time 2019-04-17 17:03
     * @param id 主键
     * @return 返回唯一扩展类数据
     */
    CircleInfoCustom findCustomById(Integer id);

    /**
     * description：根据二级类别编号和上下架状态查询圈子集合
     * user 朱正磊
     * time 2019-04-23 18:06
     * @param subTypeCode 二级类别编号
     * @param state 状态 1：上架；2：下架
     * @return 返回圈子集合
     */
    List<CircleInfo> findBySubTypeCodeAndState(@Param("subTypeCode") String subTypeCode, @Param("state") Integer state);

    /**
     * description：批量上、下架
     * user 朱正磊
     * time 2019-04-24 16:37
     * @param data 主键集合以及上下架状态Map
     * @return 返回持久化操作数据库状态值
     */
    Integer updateBatchState(Map<String, Object> data);

    /**
     * description：批量选入、撤出精彩页面
     * user 朱正磊
     * time 2019-04-24 16:37
     * @param data 主键集合以及是否进入精彩状态Map
     * @return 返回持久化操作数据库状态值
     */
    Integer updateBatchIsWonderful(Map<String, Object> data);

    /**
     * description：根据圈子名称查询圈子列表（可以不存在，如果存在只允许存在一条数据）
     * user 朱正磊
     * time 2019-04-25 15:56
     * @param circleName 圈子名称
     * @return 返回圈子列表
     */
    List<CircleInfo> findByCircleName(String circleName);

    /**
     * description：根据上下架状态查询列表数据
     * user 朱正磊
     * time 2019-05-28 14:11
     * @param state 上下架状态
     * @return 返回列表数据
     */
    List<CircleInfo> findListByState(@Param("state") Integer state);

    List<CircleInfoVo> findByCircleNameLike (String circleName);

    /**
     * @Author 肖拔赟
     * @Description 获取圈子成列表
     * @Date Created on 2019-04-22 17:2
     * @param menuCode 所属主类型级别编号
     */
    List<CircleInfoVo> getCircleByMenuCode(@Param("menuCode") String menuCode, @Param("userId") String userId);

    /**
     * @Author 肖拔赟
     * @Description 5.5	获取圈子成员
     * @Date Created on 2019-04-22 17:2
     * @param page 分页对象
     */
    List<Map<String,String>> getMemberUserListPage(Page page);

    /**
     * description: 查询热门圈子
     * author sunny
     * createDate 2019-05-15 上午 10:26
     * @return
     */
    List<Map<String, Object>> findHotCircle();

}
